<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Exemplos simples - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/learning.paginator.simple.html">Inglês (English)</a></li>
    <li><a href="../pt-br/learning.paginator.simple.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="learning.paginator.intro.html">Introdu&ccedil;&atilde;o</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="learning.paginator.html">Iniciando com o Zend_Paginator</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="learning.paginator.control.html">Pagination Control and ScrollingStyles</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="learning.paginator.simple" class="section"><div class="info"><h1 class="title">Exemplos simples</h1></div>
    

    <p class="para">
        No primeiro exemplo nós não faremos nada espetacular, mas com certeza isso vai
        te dar uma boa idéia do que o <span class="classname">Zend_Paginator</span> é capaz de fazer.
        Vamos pensar em um array chamado $data, com números de 1 a 100 dentro dele, que
        queremos dividir em algumas páginas. Podemos usar o método estático
         <span class="methodname">factory()</span> da classe <span class="classname">Zend_Paginator</span>
        para ter um objeto <span class="classname">Zend_Paginator</span> com nosso array dentro dele.
    </p>

    <pre class="programlisting brush: php">
// Cria um array com números de 1 a 100
$data = range(1, 100);

// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);
</pre>


    <p class="para">
        Estamos quase lá! A variável $paginator agora contém uma referência para o
        objeto Paginator. Por padrão ele é configurado para mostrar 10 items por página.
        Para mostrar os items para a página atual, tudo que você tem a fazer é colocar
        o objeto Paginator dentro de um laço foreach. Por padrão a página ativa será a
        primeira caso nada esteja especificado. Nós vamos ver como você pode
        especificar uma página mais tarde. O trecho abaixo vai mostrar uma lista fora de
        ordem contendo números de 1 a 10, os quais são os números da primeira página.
    </p>

    <pre class="programlisting brush: php">
// Criando array com números de 1 a 100
$data = range(1, 100);

// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);

?&gt;&lt;ul&gt;&lt;?php

// Insere cada item para a página atual dentro de uma tag &lt;li&gt;
foreach ($paginator as $item) {
    echo &#039;&lt;li&gt;&#039; . $item . &#039;&lt;/li&gt;&#039;;
}

?&gt;&lt;/ul&gt;
</pre>


    <p class="para">
        Agora vamos tentar trazer os items da segunda página. Você pode usar o método
         <span class="methodname">setCurrentPageNumber()</span> para selecionar qual página você quer ver.
    </p>

    <pre class="programlisting brush: php">
// Criando array com números de 1 a 100
$data = range(1, 100);

// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($data);

// Seleciona a segunda página
$paginator-&gt;setCurrentPageNumber(2);

?&gt;&lt;ul&gt;&lt;?php

// Insere cada item para a página atual dentro de uma tag &lt;li&gt;
foreach ($paginator as $item) {
    echo &#039;&lt;li&gt;&#039; . $item . &#039;&lt;/li&gt;&#039;;
}

?&gt;&lt;/ul&gt;
</pre>


    <p class="para">
        Como esperado, esse trecho de código vai montar uma lista não ordenada com números
        do 11 ao 20.
    </p>

    <p class="para">
        Esse simples exemplo demonstra um pouco do que pode ser feito com
        <span class="classname">Zend_Paginator</span>. Entretanto, uma aplicação de verdade raramente
        lê seus dados de um array estático, então a próxima sessão é responsável por mostrar
        como você pode usar o <span class="classname">Zend_Paginator</span> para paginar resultados de
        uma consulta vindo do banco de dados. Antes de prosseguir, tenha certeza de estar
        familiarizado com a maneira com que o <span class="classname">Zend_Db_Select</span> funciona!
    </p>

    <p class="para">
        Em nossa base de exemplos nos vamos ter uma tabela com posts de um blog chamada &#039;posts&#039;.
        A tabela &#039;posts&#039; tem quatro colunas: id, titulo, texto, data_criacao.
        Vamos dar uma olhada em um exemplo simples.
    </p>

    <pre class="programlisting brush: php">
// Criando uma consulta. $db é o objeto Zend_Db_Adapter, que assumimos
// que já exista em seu código.
$select = $db-&gt;select()-&gt;from(&#039;posts&#039;)-&gt;order(&#039;data_criacao DESC&#039;);

// Cria um objeto Paginator usando o método factory do Zend_Paginator
$paginator = Zend_Paginator::factory($select);

// Seleciona a segunda página
$paginator-&gt;setCurrentPageNumber(2);

?&gt;&lt;ul&gt;&lt;?php

// Insere cada item para a página atual dentro de uma tag &lt;li&gt;
foreach ($paginator as $item) {
    echo &#039;&lt;li&gt;&#039; . $item-&gt;title . &#039;&lt;/li&gt;&#039;;
}

?&gt;&lt;/ul&gt;
</pre>


    <p class="para">
        Como você pode ver, esse exemplo não é tão diferente do anterior.
        A única diferença é que você passa um objeto <span class="classname">Zend_Db_Select</span> para o
        método  <span class="methodname">factory()</span> da classe paginator ao invés de um array.
        Para mais detalhes de como o adaptador de banco de dados executa a sua consulta de maneira
        eficiente, veja o capítulo <span class="classname">Zend_Paginator</span> no manual de referência
        sobre os adaptadores DbSelect e DbTableSelect.
    </p>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="learning.paginator.intro.html">Introdu&ccedil;&atilde;o</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="learning.paginator.html">Iniciando com o Zend_Paginator</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="learning.paginator.control.html">Pagination Control and ScrollingStyles</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="learning.html">Conhecendo o Zend Framework</a></li>
  <li class="header up"><a href="learning.paginator.html">Iniciando com o Zend_Paginator</a></li>
  <li><a href="learning.paginator.intro.html">Introdu&ccedil;&atilde;o</a></li>
  <li class="active"><a href="learning.paginator.simple.html">Exemplos simples</a></li>
  <li><a href="learning.paginator.control.html">Pagination Control and ScrollingStyles</a></li>
  <li><a href="learning.paginator.together.html">Juntando tudo</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>